package com.yigo.cuc.domain.dict.repo;

import com.yigo.bsc.api.dict.query.DictItemQuery;
import com.yigo.bsc.api.dict.resp.DictItemListResp;
import com.yigo.cuc.domain.dict.entity.DictItem;
import com.yigo.cuc.domain.dict.entity.DictType;
import lombok.NonNull;

import java.io.Serializable;
import java.util.*;

public interface DictRepo {
    /**
     * 检查是否有同名的类型编码或类型名称
     *
     * @param dictTypeCode
     * @param dictTypeName
     * @return
     */
    Long countDictTypeByCodeOrName(@NonNull String dictTypeCode, @NonNull String dictTypeName);

    DictType save(DictType dmo);

    DictType findDictTypeById(@NonNull Serializable id);

    /**
     * 检查相同dictTypeCode是否有同名的选项编码或选项名称
     *
     * @param dictTypeCode
     * @param dictItemCode
     * @param dictItemName
     * @return
     */
    Long countDictItemByTypeCodeAndCodeOrName(@NonNull String dictTypeCode, @NonNull String dictItemCode,
                                              @NonNull String dictItemName);

    DictItem save(DictItem dmo);

    DictItem findDictItemById(@NonNull Serializable id);

    List<DictItemListResp> queryDictItemList(@NonNull DictItemQuery query);
}
